package com.xjh.basestudy.designmode.createMode.createMode2_Prototype.p2_shallowClone;

/**
 * @Author XuJianHua
 * @Date 2022/9/24 11:19
 * @Description 敌机克隆工厂
 * 我们在敌机克隆工厂类EnemyPlaneFactory中第4行使用了一个静态的敌机对象作为原型，
 * 并于第7行提供了一个获取敌机实例的方法getInstance()，
 * 其中简单地调用克隆方法得到一个新的克隆对象（此处省略了异常捕获代码），
 * 并将其横坐标重设为传入的参数，最后返回此克隆对象，这样我们便可轻松获取一架敌机的克隆实例了。
 */
public class EnemyPlaneFactory {

    //此处用单例饿汉模式造一个敌机原型
    private static EnemyPlane protoType = new EnemyPlane(200);

    //获取敌机克隆实例
    public static EnemyPlane getInstance(int x) throws CloneNotSupportedException {
        EnemyPlane clone = protoType.clone();//复制原型机
        clone.setX(x);//重新设置克隆机的x坐标
        return clone;
    }

}
